package controller;

import java.io.IOException;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import excecoes.DadosCadastroInvalidos;

import model.basicas.Departamento;
import model.basicas.Usuario;
import model.negocios.ControladorDepartamento;

/**
 * Servlet implementation class DepartamentoServlet
 */
@WebServlet("/DepartamentoServlet")
public class DepartamentoServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public DepartamentoServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String cmd = request.getParameter("cmd");
		
		if (cmd == null)
			cmd = "principal";
		
		Departamento departamento = new Departamento();
		ControladorDepartamento departamentoDAO = new ControladorDepartamento();
		
		if (cmd != null || cmd.equalsIgnoreCase("principal")){
			
			departamento.setNomeDepartamento(request.getParameter("nome"));
			
		}
		
		try{
			RequestDispatcher rd = null;
			if (cmd.equalsIgnoreCase("listar")){
				
				List<Departamento> listDepartamento= departamentoDAO.consultarTodos();
				request.setAttribute("lista", listDepartamento);
				rd = request.getRequestDispatcher("/listaDepartamento.jsp");
			}
			else if(cmd.equalsIgnoreCase("addDep")){
				
				departamentoDAO.inserir(departamento);
				rd = request.getRequestDispatcher("/DepartamentoServlet?cmd=listar");
				request.setAttribute("msg", "Departamento cadastrado!");
			}
			else if(cmd.equalsIgnoreCase("excluir")){
				
				long id = Integer.parseInt(request.getParameter("id"));
				departamento.setIdDepartamento(id);
				departamentoDAO.remover(departamento);
				rd = request.getRequestDispatcher("/DepartamentoServlet?cmd=listar");
				request.setAttribute("msg", "Departamento removido!");
			}
			else if(cmd.equalsIgnoreCase("att")) {
				
				long id = Integer.parseInt(request.getParameter("id"));
				departamento.setIdDepartamento(id);
				departamento = departamentoDAO.consultarPorId(departamento.getIdDepartamento());
				HttpSession session = request.getSession(true);
				session.setAttribute("departamento", departamento);
				rd = request.getRequestDispatcher("/departamentoFormAtt.jsp");
				
			}
			else if(cmd.equalsIgnoreCase("atualizar")){
				
				long id = Integer.parseInt(request.getParameter("id"));
				departamento.setIdDepartamento(id);
				departamentoDAO.atualizar(departamento);
				rd = request.getRequestDispatcher("/DepartamentoServlet?cmd=listar");
				request.setAttribute("msg", "Dados alterados!");
			}
			else if(cmd.equalsIgnoreCase("principal")){
				
				rd = request.getRequestDispatcher("/logado.jsp");
				
			} 
			rd.forward(request, response);
		}catch (DadosCadastroInvalidos e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
